home *** CD-ROM | disk | FTP | other *** search
/ Almathera Ten Pack 3: CDPD 3 / Almathera Ten on Ten - Disc 3: CDPD3.iso / scope / 151-175 / scopedisk168 / tinytools / checklist / checklist.asm < prev    next >
Assembly Source File  |  1995-03-19  |  2KB  |  105 lines

  1. ; Clip input lines on specified locations and write result to standard output.
  2.  
  3.        INCLUDE "/include/init.i"
  4.  
  5. ;      OPT     D+
  6.  
  7. ; Variable storage
  8.  
  9.        STRUCT  ArgArray,(3+1)*4
  10.        SIZE
  11.  
  12. ; Regs
  13.  
  14. ErrorStrPtr    EQUR    A4
  15.  
  16. ; Startup
  17.  
  18.        STACK   4000
  19.        INIT
  20.  
  21. ; Let ARP interpret the commandline
  22.  
  23.        MOVE.L  ComLineBase(GP),A0
  24.        MOVE.L  ComLineSize(GP),D0
  25.        LEA     HelpMsg(PC),A1
  26.        LEA     ArgArray(GP),A2
  27.        LEA     Template(PC),A3
  28.        MOVE.L  A1,(A2)
  29.        CALL    GADS
  30.        MOVE.L  (A2),ErrorStrPtr
  31.        TST.L   D0
  32.        BEQ     ErrorExit
  33.        BMI     ErrorExit
  34.  
  35. ; Fail if no list specifier present
  36.  
  37.        LEA     NoListSpec(PC),ErrorStrPtr
  38.        TST.L   ArgArray+1*4(GP)
  39.        BNE.S   ListSpecified
  40.        TST.L   ArgArray+2*4(GP)
  41.        BEQ.S   ErrorExit
  42. ListSpecified:
  43.  
  44. ; Cache A6, load execbase, forbid and presume success.
  45.  
  46.        MOVE.L  A6,-(SP)
  47.        MOVE.L  $4.W,A6
  48.        CALL    Forbid
  49.        MOVE.W  #5,ReturnCode(GP)
  50.  
  51. ; Search the task list
  52.  
  53.        TST.L   ArgArray+1*4(GP)
  54.        BEQ.S   NotTheTaskList
  55.        MOVE.L  ArgArray(GP),A1
  56.        CALL    FindTask
  57.        TST.L   D0
  58.        BNE.S   NameFound
  59. NotTheTaskList:
  60.  
  61. ; Search the port list
  62.  
  63.        TST.L   ArgArray+2*4(GP)
  64.        BEQ.S   NotThePortList
  65.        MOVE.L  ArgArray(GP),A1
  66.        CALL    FindPort
  67.        TST.L   D0
  68.        BNE.S   NameFound
  69. NotThePortList
  70.  
  71. ; Clear returncode if name not in any list. Permit and pop ARP base.
  72.  
  73.        CLR.W   ReturnCode(GP)
  74. NameFound:
  75.        CALL    Permit
  76.        MOVE.L  (SP)+,A6
  77.  
  78. ; Done, cleanup
  79.  
  80. Exit:
  81.        SUB.L   ErrorStrPtr,ErrorStrPtr
  82. ErrorExit:
  83.  
  84. ; Display error string, if any, and exit
  85.  
  86.        MOVE.L  ErrorStrPtr,D0
  87.        BEQ.S   NoErrorMsg
  88.        MOVE.L  D0,A1
  89.        CALL    Puts
  90. NoErrorMsg:
  91.        RTS
  92.  
  93. ; The string section
  94.  
  95. Template:
  96.        DC.B    'Name/a,Task/s,Port/s',0
  97. HelpMsg:
  98.        DC.B    'CheckList - Check system list for name. RC=5 if found.',10
  99.        DC.B    'Usage: CheckList "namestring" [Task] [Port]',0
  100. NoListSpec:
  101.        DC.B    'Need list specifier!',0
  102.        CNOP    0,2
  103.  
  104.        END
  105.